什麼是共識機制?

Tino Lin
5 min readJan 30, 2019

區塊鏈共識機制與它的演進,是由於區塊鏈式去中心化而且分散式的系統,必須要有一套放諸四海皆準類似憲法的規則,來規範如何證明誰能夠獲得記帳的權利全並且得到獎勵,還有意圖危害系統將會受到甚麼懲罰,來維持整個系統穩定發展。

區塊鏈(Blockchain)其實就是帳本串連在一起,每一塊的帳本都記錄著我們的交易,再計算出每塊帳本的 Hash (藝術雜湊值)表示。而每一塊帳本的 Hash,會放在下一個帳本的最前面,跟著這些帳本的交易紀錄變成一個新的 Hash,這表示如果你不能單單竄改了一個區塊的交易紀錄,後面的區塊也需要一起更改。在這種條件下的竄改機率幾乎等於零。這就是為什麼大家會說區塊鏈是不可篡改的,以下為我們常見的共識演算法。

PoW (Proof of Work,工作量證明)

也就是付出的越多,那就可以獲得越多的獎勵,常見的比特幣(BTC)以及以太幣(ETH)皆是採用這種共識演算法。一般來說,礦工們會透過CPU、GPU或 ASIC來進行挖礦,主要過程⼤概是猜⼀個名為Nonce的數值,第一個找到 Nonce 值經過函數之後小於某一個值的礦工就獲勝,可以獲得出塊的權利。 雖然PoW可以讓整體網絡相對去中心化,但確認交易的速度卻相當緩慢,這也使得區塊鏈想要融入我們日常的生活有不少阻力。另一方面,當越來越多的礦工投入時,便造成了大量的能源浪費。為了改善交易速度以及減少耗能,所以產生了另外一個共識機制 — PoS (Proof of Stake)。

代表幣種:BTC、LTC、XMR

PoS (Proof of Stake,權益證明)

主要便是希望可以解決PoW運算時消耗過多能源的缺點,不同於PoW透過計算能力競爭記帳權,PoS是依照所持有幣的數量,當你持有的越多就代表有越大的機率可以取得記帳權力,因此PoS免去了礦機消耗的龐⼤電⼒資源,但區塊鏈擴容與交易確認速度過慢的問題仍然未能解決。

代表幣種:ADA、XTZ、IOST

代理權益證明DPoS(Delegated Proof of Stake)

為了解決目前PoW遇到的耗能費時問題以及PoS仍舊無法突破的擴容、效率問題,Daniel Larimer(BM)提出了新的共識機制DPoS,BM除了是EOS的創始人也曾經開發過Bitshares(2014)還有Steem(2016),兩個項目都採用DPoS共識機制,區塊鏈網路運行到現在的穩定程度,已經能夠證明DPoS共識機制是可行的,從交易紀錄的活躍程度來看,透過DPoS共識機制的區塊鏈效能是目前區塊鏈網路中最高的。

作為第三代的共識機制,就是為了解決前兩代痛點而出現,保留了PoS節能的優點,並引入了代議民主的概念,每一顆EOS都是一張選票,藉由選票選出21個Block Producer(超級節點),透過減少節點的數量,除了能夠達成比PoS更低的能耗,更是解決了PoW與PoS其中一個痛點 — 交易確認的時間過長的問題。

如果覺得DPoS的概念太過抽象難以理解,可以把DPoS想像成一間公司,而21個超級節點就是公司的21個董事與大股東,負責參與大公司大事的決策,由於成為超級節點的大股東,手上都握有極大份額的股份,常理來說並不會做出對公司未來有害的決策,若真的有股東做出不智的決定,所有的股份持有者也可以透過手上的幣作為選票來讓這名對公司有危害的大股東下台。

DPoS的架構把所有利益關係人串聯起來,讓所有參與者不再是互為競爭者而是合夥人。雖然眾多人批評這種代議式民主的方式有違了區塊鏈去中心化的初衷,但仔細目前BTC以及ETH的算力分布,BTC前10大礦池就已經把持了超過86%的算力;ETH更是集中,前五大就超過了75%。

代表幣種:EOS、STEEM、BTS

另一方面,要將區塊鏈融入我們的生活中必要的條件就是快速的交易確認,當我們藉由虛擬貨幣從事任何一種支付行動的時候都希望可以和我們目前的日常支付沒有過大的差異。然而BTC以及ETH卻無法達成,光等待確認的時間就至少需要20分鐘了,可想而知,我們是無法想像要買一杯珍奶需要站在櫃檯等待20分鐘的。而DPoS透過代議式的民主機制,選出21個節點來幫EOS網絡來進行確認,這樣便可大幅縮短等待確認的時間,進而讓更多的實際應用變成可能。

在區塊鏈中,不可能的三角分別為:可擴展性、去中心化以及安全。而從DPoS中很明顯的可以發現到降低了去中心化這個部分,進而達到了高TPS。整個區塊鏈行業還在發展的早期階段,DPoS只是提供了我們一個可能的想像,也期待在日後透過社群的腦力激盪,可以將不可能的三角化為可能。

BTC address:1NoTV9Fjr6AafitcvLGnNw9PTVsRRP9dGJ

ETH address:0x8d5F05270da470e015b67Ab5042BDbE2D2FEFB48

--

--

Tino Lin

【Blockchain diary】 → Line :tino28082000 │Telegram :@Tno00